/**
 * 逻辑与 &&
 * 逻辑与操作符不一定返回布尔值
 * - 使用于两个布尔值返回布尔值
 */
console.log(true && false)

/**
 * 如果有操作数不是布尔值，则逻辑与遵循以下规则 对象不包括null
 * ①如果第一个操作数是对象，则返回第二个操作数
 * ②如果第二个操作数是对象，则只有第一个操作数求值为 true 才会返回该对象
 * ③如果两个操作数都是对象，则返回第二个操作数
 * ④如果有一个操作数是 null，则返回 null
 * ⑤如果有一个操作数是 NaN，则返回 NaN
 * ⑥如果有一个操作数是 undefined，则返回 undefined
 * 逻辑与操作符是一种短路操作符，意思就是如果第一个操作数决定了结果，那么永远不会对第二个操作数求值
 */
let obj = {
  name: 'jack',
}
console.log(null && obj)
console.log(false && obj)

//使用场景
let isFlag = true
const obj1 = isFlag && obj
console.log(obj1)
